﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Persistencia.Repositorios;
using Entidades;
using Common;

namespace Controladores
{
    public class ProyectoControlador
    {
        readonly ProyectoRepositorio _proyectoRepositorio = new ProyectoRepositorio();

        /// <summary>
        /// Devuelve los Proyectos FINALIZADOS, PENDIENTES DE PAGO
        /// [Opcional] Id Tipo Usuario
        /// [Opcional] Id Categoría Usuario
        /// [Opcional] Id Tipo Usuario a ignorar
        /// </summary>
        /// <returns></returns>
        public List<Proyecto> ObtenerProyectosPendientesDePago(bool activos = true, int? idTipoUsuario = null, int? idCategoriaUsuario = null, int? idTipoUsuarioIgnorado = null)
        {
            var proyectos = new List<Proyecto>();
            try
            {
                proyectos = _proyectoRepositorio.ObtenerProyectosPendientesDePago(activos, idTipoUsuario, idCategoriaUsuario, idTipoUsuarioIgnorado);
            }
            catch (Exception)
            {
                throw;
            }
            return proyectos;
        }

        /// <summary>
        /// Obtiene los Proyectos (activos?) en los que participó un Usuario, como Adaptador/Director/Mezclador/Traductor/Actor/UsuarioCreador
        /// </summary>
        /// <param name="idUsuario"></param>
        /// <param name="activos"></param>
        /// <returns></returns>
        public IList<Proyecto> ObtenerProyectos(int? idUsuario = null, bool activos = true)
        {
            try
            {
                var parametros = new Common.Data.ParameterList();
                    parametros.AddParameter("activo", activos);
                    parametros.AddParameter("id_usuario", idUsuario);
                return new RepositorioBase<Proyecto>.StoredProcedure().GetList(WellKnownKeys.StoredProcedures.Proyectos_By_User_GET, parametros.ToDictionary());
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}
